package br.com.news.modal;

import java.io.Serializable;
import java.util.Date;

import br.com.news.modal.interfaces.IBaseBean;

public class NoticiaBean implements Serializable, IBaseBean {

	private static final long serialVersionUID = 5110063499746234197L;

	private long idNoticia;
	private CategoriaBean categoria;
	private String autor;
	private Date dataNoticia;
	private String texto;
	private String titulo;
	private String descricaoFonte;
	private FonteBean fonte;

	public static final String ID_NOTICIA = "_id";
	public static final String ID_CATEGORIA = "idcategoria";
	public static final String FONTE = "fonte";
	public static final String AUTOR = "autor";
	public static final String DATA_NOTICIA = "datanoticia";
	public static final String TEXTO = "texto";
	public static final String TITULO = "titulo";

	public NoticiaBean() {
	}

	public NoticiaBean(long idNoticia) {
		this.idNoticia = idNoticia;
	}

	public NoticiaBean(long idNoticia, CategoriaBean categoria, String autor, Date dataNoticia, String texto, String titulo,
			FonteBean fonte) {
		this.idNoticia = idNoticia;
		this.categoria = categoria;
		this.descricaoFonte = fonte != null? fonte.getDescricao() : null;
		this.autor = autor;
		this.dataNoticia = (dataNoticia == null ? null : new Date(dataNoticia.getTime()));
		this.texto = texto;
		this.titulo = titulo;
		this.fonte = fonte;
	}

	public long getIdNoticia() {
		return this.idNoticia;
	}

	public void setIdNoticia(long idNoticia) {
		this.idNoticia = idNoticia;
	}

	public CategoriaBean getCategoria() {
		return this.categoria;
	}

	public void setCategoria(CategoriaBean categoria) {
		this.categoria = categoria;
	}

	public final String getDescricaoFonte() {
		return descricaoFonte;
	}

	public final void setDescricaoFonte(String descricaoFonte) {
		this.descricaoFonte = descricaoFonte;
	}

	public final FonteBean getFonte() {
		return fonte;
	}

	public final void setFonte(FonteBean fonte) {
		this.descricaoFonte = fonte != null? fonte.getDescricao() : null;
		this.fonte = fonte;
	}

	public String getAutor() {
		return this.autor;
	}

	public void setAutor(String autor) {
		this.autor = autor;
	}

	public Date getDataNoticia() {
		return (this.dataNoticia == null ? null : new Date(this.dataNoticia.getTime()));
	}

	public void setDataNoticia(Date dataNoticia) {
		this.dataNoticia = (dataNoticia == null ? null : new Date(dataNoticia.getTime()));
	}

	public String getTexto() {
		return this.texto;
	}

	public void setTexto(String texto) {
		this.texto = texto;
	}

	public String getTitulo() {
		return this.titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	@Override
	public String toString() {
		return titulo;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + (int) (idNoticia ^ (idNoticia >>> 32));
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (!(obj instanceof NoticiaBean))
			return false;
		NoticiaBean other = (NoticiaBean) obj;
		if (idNoticia != other.idNoticia)
			return false;
		return true;
	}

	@Override
	public String nomeTabela() {
		return "Noticia";
	}

	@Override
	public String nomePrimaryKey() {
		return ID_NOTICIA;
	}

	@Override
	public String[] nomeColunas() {
		String[] nomeCol = new String[] { ID_NOTICIA, ID_CATEGORIA, FONTE, AUTOR, DATA_NOTICIA, TEXTO, TITULO };
		return nomeCol;
	}

	@Override
	public long getId() {
		return this.idNoticia;
	}

}
